{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "name": "fer2013.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "gwdg7Sv3XBaP",
        "outputId": "8313107c-c806-4b64-8873-43f3df71af43",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        }
      },
      "source": [
        "%tensorflow_version 2.x"
      ],
      "execution_count": 1,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "TensorFlow 2.x selected.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "2nz38mJZXN_P",
        "colab": {}
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "from skimage import io, transform\n",
        "\n",
        "import tensorflow as tf\n",
        "from tensorflow.keras.optimizers import SGD\n",
        "from tensorflow.python.keras.preprocessing.image import ImageDataGenerator\n",
        "from tensorflow.python.keras import Sequential\n",
        "from tensorflow.python.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D, BatchNormalization\n",
        "from tensorflow.python.keras.callbacks import ReduceLROnPlateau\n",
        "from tensorflow.python.lib.io import file_io\n",
        "\n",
        "%matplotlib inline"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DvhhsabEvIve",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "outputId": "6792e571-2eae-46c3-d717-a8c8fbffa382"
      },
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NH7P4yxNZzoe",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "! rm -rf train; mkdir train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/ck-plus.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/fer2013/test-public.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/fer2013/test-private.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/fer2013/train.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/jaffe.zip' -d train"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mI1RWP4L23Jl",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "! rm -rf dev; mkdir dev\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/webcam-us.zip' -d dev\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/webcam-pk.zip' -d dev"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Oz39jin1ATcV",
        "colab_type": "code",
        "outputId": "b0364fa3-580a-49a3-9d63-611190993058",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 145
        }
      },
      "source": [
        "# Move 80% of webcam images to the training set\n",
        "%%bash\n",
        "source_root='/content/dev/'\n",
        "target_root='/content/train/'\n",
        "IFS=$(echo -en \"\\n\\b\")\n",
        "for dir in $(ls -1 \"$source_root\")\n",
        "do\n",
        "    source_dir=\"$source_root$dir\"\n",
        "    target_dir=\"$target_root$dir\"\n",
        "    num_files=$(ls -1 \"$source_dir\" | wc -l)\n",
        "    num_to_move=$(( $num_files*8/10 ))\n",
        "    echo \"Moving $num_to_move/$num_files files from $source_dir to $target_dir\"\n",
        "    mkdir -p \"$target_dir\"\n",
        "    cd \"$source_dir\"\n",
        "    ls -1 \"$source_dir\" | shuf -n $num_to_move | xargs -i mv {} \"$target_dir\"\n",
        " done"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Moving 33/42 files from /content/dev/0 angry to /content/train/0 angry\n",
            "Moving 40/50 files from /content/dev/1 disgust to /content/train/1 disgust\n",
            "Moving 25/32 files from /content/dev/2 fear to /content/train/2 fear\n",
            "Moving 30/38 files from /content/dev/3 happy to /content/train/3 happy\n",
            "Moving 24/31 files from /content/dev/4 sad to /content/train/4 sad\n",
            "Moving 25/32 files from /content/dev/5 surprise to /content/train/5 surprise\n",
            "Moving 30/38 files from /content/dev/6 neutral to /content/train/6 neutral\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "oPO33wZKzHsc",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "EPOCHS = 50\n",
        "BS = 128\n",
        "DROPOUT_RATE = 0.35\n",
        "SGD_LEARNING_RATE = 0.01\n",
        "SGD_DECAY = 0.0001"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "hAjh6yOLYPZm",
        "colab": {}
      },
      "source": [
        "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
        "\n",
        "# Function that reads the data from the csv file, increases the size of the images and returns the images and their labels\n",
        "def get_datagen(dataset):\n",
        "    # Generate batches of tensor image data with real-time data augmentation. The data will be looped over (in batches) indefinitely\n",
        "    # rescale:          Rescaling factor (defaults to None). Multiply the data by the value provided (before applying any other transformation)\n",
        "    # rotation_range:   Int. Degree range for random rotations\n",
        "    # shear_range:      Float. Shear Intensity (Shear angle in counter-clockwise direction as radians)\n",
        "    # zoom_range:       Float or [lower, upper]. Range for random zoom. If a float, [lower, upper] = [1-zoom_range, 1+zoom_range]\n",
        "    # fill_mode :       Points outside the boundaries of the input are filled according to the given mode: {\"constant\", \"nearest\", \"reflect\" or \"wrap\"}\n",
        "    # horizontal_flip:  Boolean. Randomly flip inputs horizontally\n",
        "    datagen = ImageDataGenerator(\n",
        "                        rescale=1./255,\n",
        "                        featurewise_center=False,\n",
        "                        featurewise_std_normalization=False,\n",
        "                        rotation_range=10,\n",
        "                        width_shift_range=0.1,\n",
        "                        height_shift_range=0.1,\n",
        "                        zoom_range=0.1,\n",
        "                        horizontal_flip=True)\n",
        "\n",
        "    return datagen.flow_from_directory(\n",
        "            dataset,\n",
        "            target_size=(48, 48),\n",
        "            color_mode='grayscale',\n",
        "            shuffle = True,\n",
        "            class_mode='categorical',\n",
        "            batch_size=BS)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rm5tqGr-zHsm",
        "colab_type": "code",
        "outputId": "96f10809-9c52-45bc-f26e-aa2ace136ea4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 92
        }
      },
      "source": [
        "# FER2013 has 35,887 labeled images, which are divided into 3589 test and 28709 train images.\n",
        "X_train_gen  = get_datagen('/content/train')"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/utils.py:173: UserWarning: Using \".tiff\" files with multiple bands will cause distortion. Please verify your output.\n",
            "  warnings.warn('Using \".tiff\" files with multiple bands '\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Found 37495 images belonging to 7 classes.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "a0BCBC3NEaID",
        "colab_type": "code",
        "outputId": "b2979800-8432-475a-f9d8-a22eda16f8e9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        }
      },
      "source": [
        "X_dev_gen    = get_datagen('/content/dev')\n",
        "\n",
        "X_dev = np.zeros((len(X_dev_gen.filepaths), 48, 48, 1))\n",
        "Y_dev = np.zeros((len(X_dev_gen.filepaths), 7))\n",
        "for i in range(0,len(X_dev_gen.filepaths)):\n",
        "  x = io.imread(X_dev_gen.filepaths[i], as_gray=True)\n",
        "  X_dev[i,:] = transform.resize(x, (48,48,1))\n",
        "  Y_dev[i,X_dev_gen.classes[i]] = 1"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found 56 images belonging to 7 classes.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NfMDUTJX-QM8",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from tensorflow.keras.models import load_model\n",
        "model = load_model('/content/drive/My Drive/cs230 project/models/webcam-SGD_LR_0.01000-EPOCHS_100-BS_128-DROPOUT_0.35test_acc_0.698.h5')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RJ3hGX2HzHsw",
        "colab_type": "code",
        "outputId": "7ccae9a5-18a1-464b-ee1d-96f18f53797f",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "history = model.fit_generator(\n",
        "    generator = X_train_gen,\n",
        "    validation_data = (X_dev, Y_dev),\n",
        "    shuffle=True,\n",
        "    callbacks=[rlrop],\n",
        "    epochs=EPOCHS)"
      ],
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "WARNING:tensorflow:From <ipython-input-13-170819b8d114>:6: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Please use Model.fit, which supports generators.\n",
            "WARNING:tensorflow:sample_weight modes were coerced from\n",
            "  ...\n",
            "    to  \n",
            "  ['...']\n",
            "Train for 293 steps, validate on 56 samples\n",
            "Epoch 1/50\n",
            "293/293 [==============================] - 27s 92ms/step - loss: 0.8946 - accuracy: 0.6714 - val_loss: 1.0206 - val_accuracy: 0.6250\n",
            "Epoch 2/50\n",
            "293/293 [==============================] - 25s 85ms/step - loss: 0.8887 - accuracy: 0.6687 - val_loss: 1.0065 - val_accuracy: 0.6071\n",
            "Epoch 3/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8925 - accuracy: 0.6706 - val_loss: 1.0048 - val_accuracy: 0.6250\n",
            "Epoch 4/50\n",
            "293/293 [==============================] - 25s 84ms/step - loss: 0.8878 - accuracy: 0.6682 - val_loss: 0.9992 - val_accuracy: 0.6250\n",
            "Epoch 5/50\n",
            "293/293 [==============================] - 24s 84ms/step - loss: 0.8852 - accuracy: 0.6702 - val_loss: 1.0042 - val_accuracy: 0.6429\n",
            "Epoch 6/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8901 - accuracy: 0.6703 - val_loss: 0.9996 - val_accuracy: 0.6607\n",
            "Epoch 7/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8908 - accuracy: 0.6689 - val_loss: 1.0038 - val_accuracy: 0.6429\n",
            "Epoch 8/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8858 - accuracy: 0.6702 - val_loss: 1.0024 - val_accuracy: 0.6429\n",
            "Epoch 9/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8908 - accuracy: 0.6695 - val_loss: 1.0038 - val_accuracy: 0.6429\n",
            "Epoch 10/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8843 - accuracy: 0.6715 - val_loss: 1.0006 - val_accuracy: 0.6429\n",
            "Epoch 11/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8865 - accuracy: 0.6707 - val_loss: 1.0078 - val_accuracy: 0.6429\n",
            "Epoch 12/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8893 - accuracy: 0.6703 - val_loss: 1.0028 - val_accuracy: 0.6429\n",
            "Epoch 13/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8877 - accuracy: 0.6689 - val_loss: 1.0060 - val_accuracy: 0.6429\n",
            "Epoch 14/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8860 - accuracy: 0.6742 - val_loss: 1.0071 - val_accuracy: 0.6786\n",
            "Epoch 15/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8870 - accuracy: 0.6707 - val_loss: 1.0038 - val_accuracy: 0.6429\n",
            "Epoch 16/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8852 - accuracy: 0.6709 - val_loss: 1.0170 - val_accuracy: 0.6250\n",
            "Epoch 17/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8864 - accuracy: 0.6720 - val_loss: 1.0113 - val_accuracy: 0.6607\n",
            "Epoch 18/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8875 - accuracy: 0.6701 - val_loss: 1.0063 - val_accuracy: 0.6786\n",
            "Epoch 19/50\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8857 - accuracy: 0.6713 - val_loss: 1.0060 - val_accuracy: 0.6607\n",
            "Epoch 20/50\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8840 - accuracy: 0.6715 - val_loss: 1.0047 - val_accuracy: 0.6607\n",
            "Epoch 21/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8803 - accuracy: 0.6735 - val_loss: 1.0045 - val_accuracy: 0.6607\n",
            "Epoch 22/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8791 - accuracy: 0.6736 - val_loss: 1.0105 - val_accuracy: 0.6786\n",
            "Epoch 23/50\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8822 - accuracy: 0.6756 - val_loss: 1.0020 - val_accuracy: 0.6964\n",
            "Epoch 24/50\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8825 - accuracy: 0.6740 - val_loss: 1.0082 - val_accuracy: 0.6607\n",
            "Epoch 25/50\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8820 - accuracy: 0.6717 - val_loss: 1.0040 - val_accuracy: 0.6607\n",
            "Epoch 26/50\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8799 - accuracy: 0.6730 - val_loss: 1.0119 - val_accuracy: 0.6607\n",
            "Epoch 27/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8873 - accuracy: 0.6724 - val_loss: 1.0085 - val_accuracy: 0.6607\n",
            "Epoch 28/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8829 - accuracy: 0.6728 - val_loss: 1.0011 - val_accuracy: 0.6429\n",
            "Epoch 29/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8829 - accuracy: 0.6722 - val_loss: 1.0026 - val_accuracy: 0.6429\n",
            "Epoch 30/50\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8798 - accuracy: 0.6749 - val_loss: 1.0061 - val_accuracy: 0.6786\n",
            "Epoch 31/50\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8800 - accuracy: 0.6716 - val_loss: 1.0059 - val_accuracy: 0.6607\n",
            "Epoch 32/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8865 - accuracy: 0.6678 - val_loss: 1.0162 - val_accuracy: 0.6786\n",
            "Epoch 33/50\n",
            "292/293 [============================>.] - ETA: 0s - loss: 0.8820 - accuracy: 0.6730\n",
            "Epoch 00033: ReduceLROnPlateau reducing learning rate to 7.812499825377017e-05.\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8816 - accuracy: 0.6732 - val_loss: 1.0073 - val_accuracy: 0.6607\n",
            "Epoch 34/50\n",
            "293/293 [==============================] - 25s 84ms/step - loss: 0.8800 - accuracy: 0.6736 - val_loss: 1.0049 - val_accuracy: 0.6607\n",
            "Epoch 35/50\n",
            "293/293 [==============================] - 25s 85ms/step - loss: 0.8826 - accuracy: 0.6720 - val_loss: 1.0089 - val_accuracy: 0.6607\n",
            "Epoch 36/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8808 - accuracy: 0.6742 - val_loss: 1.0049 - val_accuracy: 0.6429\n",
            "Epoch 37/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8840 - accuracy: 0.6713 - val_loss: 1.0025 - val_accuracy: 0.6429\n",
            "Epoch 38/50\n",
            "293/293 [==============================] - 24s 81ms/step - loss: 0.8786 - accuracy: 0.6744 - val_loss: 1.0071 - val_accuracy: 0.6607\n",
            "Epoch 39/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8805 - accuracy: 0.6745 - val_loss: 1.0074 - val_accuracy: 0.6964\n",
            "Epoch 40/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8833 - accuracy: 0.6724 - val_loss: 1.0048 - val_accuracy: 0.6607\n",
            "Epoch 41/50\n",
            "293/293 [==============================] - 24s 80ms/step - loss: 0.8816 - accuracy: 0.6712 - val_loss: 1.0050 - val_accuracy: 0.6607\n",
            "Epoch 42/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8810 - accuracy: 0.6750 - val_loss: 1.0083 - val_accuracy: 0.6964\n",
            "Epoch 43/50\n",
            "292/293 [============================>.] - ETA: 0s - loss: 0.8817 - accuracy: 0.6722\n",
            "Epoch 00043: ReduceLROnPlateau reducing learning rate to 3.9062499126885086e-05.\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8819 - accuracy: 0.6722 - val_loss: 1.0101 - val_accuracy: 0.6607\n",
            "Epoch 44/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8807 - accuracy: 0.6731 - val_loss: 1.0084 - val_accuracy: 0.6607\n",
            "Epoch 45/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8806 - accuracy: 0.6717 - val_loss: 1.0093 - val_accuracy: 0.6786\n",
            "Epoch 46/50\n",
            "293/293 [==============================] - 24s 83ms/step - loss: 0.8758 - accuracy: 0.6762 - val_loss: 1.0068 - val_accuracy: 0.6607\n",
            "Epoch 47/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8770 - accuracy: 0.6738 - val_loss: 1.0157 - val_accuracy: 0.6786\n",
            "Epoch 48/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8790 - accuracy: 0.6730 - val_loss: 1.0068 - val_accuracy: 0.6607\n",
            "Epoch 49/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8823 - accuracy: 0.6707 - val_loss: 1.0084 - val_accuracy: 0.6607\n",
            "Epoch 50/50\n",
            "293/293 [==============================] - 24s 82ms/step - loss: 0.8770 - accuracy: 0.6725 - val_loss: 1.0101 - val_accuracy: 0.6607\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Sr6u8rO4zHtH",
        "colab_type": "code",
        "outputId": "4ee00ecc-ccbe-4d14-e7f6-8ed5302fbea5",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 591
        }
      },
      "source": [
        "# list all data in history\n",
        "print(history.history.keys())\n",
        "# summarize history for accuracy\n",
        "plt.plot(history.history['accuracy'])\n",
        "plt.plot(history.history['val_accuracy'])\n",
        "plt.title('model accuracy')\n",
        "plt.ylabel('accuracy')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'dev'], loc='upper left')\n",
        "plt.show()\n",
        "# summarize history for loss\n",
        "plt.plot(history.history['loss'])\n",
        "plt.plot(history.history['val_loss'])\n",
        "plt.title('model loss')\n",
        "plt.ylabel('loss')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'dev'], loc='upper left')\n",
        "plt.show()"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "dict_keys(['loss', 'accuracy', 'val_loss', 'val_accuracy', 'lr'])\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6pQfysJQzHtD",
        "colab_type": "code",
        "outputId": "18f88c4a-3c4d-4704-d987-41cc9bc9e15c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 54
        }
      },
      "source": [
        "results_webcam = model.evaluate(X_dev, Y_dev, batch_size=BS)\n",
        "\n",
        "lr_str = '-SGD_LR_%.5f' % SGD_LEARNING_RATE\n",
        "epoch_str = '-EPOCHS_' + str(EPOCHS)\n",
        "bs_str = '-BS_' + str(BS)\n",
        "dropout_str = '-DROPOUT_' + str(DROPOUT_RATE)\n",
        "test_acc = 'test_acc_%.3f' % results_webcam[1]\n",
        "filename = '/content/drive/My Drive/cs230 project/models/webcam' + lr_str + epoch_str + bs_str + dropout_str + test_acc + '.h5'\n",
        "print(f'Saving model to {filename}...')\n",
        "model.save(filename)"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\r56/56 [==============================] - 0s 135us/sample - loss: 1.0101 - accuracy: 0.6607\n",
            "Saving model to /content/drive/My Drive/cs230 project/models/webcam-SGD_LR_0.01000-EPOCHS_50-BS_128-DROPOUT_0.35test_acc_0.661.h5...\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-poD_UOVZNz_",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}